from PySide6.QtCore import QPointF
from PySide6.QtGui import QPainterPath


class 路径计算器:
    def __init__(self, 样式=None):
        self.当前样式 = 样式

    @staticmethod
    def 计算路径(样式, 起点位置, 终点位置):
        路径 = QPainterPath()
        if 样式 == "曲线":
            控制点1 = QPointF((起点位置.x() + 终点位置.x()) / 2, 起点位置.y())
            控制点2 = QPointF((起点位置.x() + 终点位置.x()) / 2, 终点位置.y())
            路径.moveTo(起点位置)
            路径.cubicTo(控制点1, 控制点2, 终点位置)
        elif 样式 == "直线":
            路径.moveTo(起点位置)
            路径.lineTo(终点位置)
        elif 样式 == "折线":
            控制点1 = QPointF((起点位置.x() + 终点位置.x()) / 2, 起点位置.y())
            控制点2 = QPointF((起点位置.x() + 终点位置.x()) / 2, 终点位置.y())
            路径.moveTo(起点位置)
            路径.lineTo(控制点1)
            路径.lineTo(控制点2)
            路径.lineTo(终点位置)
        elif 样式 == "弧线":
            控制点 = QPointF((起点位置.x() + 终点位置.x()) / 2, min(起点位置.y(), 终点位置.y()) - 50)
            路径.moveTo(起点位置)
            路径.quadTo(控制点, 终点位置)
        return 路径


# 使用示例
class 连接线样式:
    def __init__(self, 样式名称: str):
        self.样式名称 = 样式名称

    def 计算路径(样式, 起点位置, 终点位置):
        pass
        # return 路径
